package controllers;

import java.util.List;
import java.util.Vector;

import views.MainPanel;
import business.services.IServicioUsuarios;
import business.services.ServiceException;
import business.services.ServicioUsuarios;

public class LoginController implements IErrorObservable {
	private List<IErrorObserver> observers;
	private IServicioUsuarios servicioUsuarios;
	private MainPanel mainPanel;
	
	public LoginController() {
		this.observers = new Vector<IErrorObserver>();
		servicioUsuarios = new ServicioUsuarios();
		mainPanel = new MainPanel();
	}

	public boolean login(String usuario, String password) {
		boolean loggedIn = false;
		try {
			loggedIn = this.servicioUsuarios.loguearUsuario(usuario, password);
			if(!loggedIn) {
				String mensaje = String.format("El login ha fallado. Chequear usuario y password");
				this.notificarErrorObservers(mensaje);
			}
		} catch (ServiceException e) {
			this.notificarErrorObservers(e.getMessage());
		}
		
		return loggedIn;
	}
	
	public void mostrarPantallaPrincipal() {
		mainPanel.showPanel();
	}
	
	public List<IErrorObserver> getErrorObservers() {
		return this.observers;
	}

	public void agregarErrorObserver(IErrorObserver observer) {
		this.observers.add(observer);
	}

	public void removerErrorObserver(IErrorObserver observer) {
		this.observers.remove(observer);
	}

	public void notificarErrorObservers(String error) {
		for (IErrorObserver observer : this.observers) {
			observer.notificarError(error);
		}
	}
}
